package com.cy.ui;


import com.cy.dao.AccountDao;
import com.cy.service.AccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Author : 残影
 * @Date: 2020-09-12 11:43
 */
public class Client {
    /**
     * BeanFactory 才是 Spring 容器中的顶层接口。
     * ApplicationContext 是它的子接口。
     * BeanFactory 和 ApplicationContext 的区别：
     * 1. 创建对象的时间点不一样。
     * 2. ApplicationContext：只要一读取配置文件，默认情况下就会创建对象。
     * 3. BeanFactory：什么使用什么时候创建对象。
     * <p>
     * ClassPathXmlApplicationContext：它是从类的根路径下加载配置文件 推荐使用这种
     * FileSystemXmlApplicationContext：它是从磁盘路径上加载配置文件，配置文件可以在磁盘的任意位置。
     * AnnotationConfigApplicationContext:当我们使用注解配置容器对象时，需要使用此类来创建 spring 容器。它用来读取注解。
     *
     * @param args
     */
    public static void main(String[] args) {
        //1.获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        //2.根据id获取对象
        AccountService accountService = (AccountService) ac.getBean("accountService");
        AccountDao accountDao = ac.getBean("accountDao", AccountDao.class);

        System.out.println(accountService);
        System.out.println(accountDao);

    }
}
